#include <voisins.h>

/*fonction qui renvoie la liste de tous les sommets adjacents (le champ "voisins" de la structure "t_SOMMET"*/
Liste voisins(t_SOMMET a, FILE *f, int Nb_aretes, const double epsilon)
{
	char 	*trash ;
	int		noeud1 = -1 ;
	int		noeud2 = -1 ;
	int		i = 0 ;
	double	valeur = -1 ;
	Liste p = creer_liste() ;
	long	cur_position = ftell(f) ;/* Sauvegarde la position du curseur de lecture du fichier pour pouvoir la restaurer en sortant*/
	trash = calloc(512, sizeof(*trash)); 
	while(strcmp("valeur", trash) != 0) /*Boucle qui permet d'aller directement aux données sur les arcs*/
	{
		fscanf(f, "%s", trash) ;
	}
	while(i <= Nb_aretes - 1)/*Lit chaque ligne du fichier texte qui définit les arrêtes du graphe et créé la liste d'arcs qui définit le champ "voisins" de "t_SOMMET" : L'arc est ajouté en tête de liste si le noeud1 ou le noeud2 correspond au numéro du sommet où l'on se trouve*/
	{
		fscanf(f,"%d %d %lf", &noeud1, &noeud2, &valeur) ;
		if(noeud1 == a.numero || noeud2 == a.numero)
		{
			t_ARC *arc ;
			arc = calloc(1, sizeof(*arc)) ;
			if(noeud1 == a.numero)
			{
				arc->depart = noeud1 ;
				arc->arrivee = noeud2 ;
			}
			else
			{
				arc->depart = noeud2 ;
				arc->arrivee = noeud1 ;
			}
			arc->distance = valeur ;
			arc->pheromones = epsilon ;
			p = ajout_tete(&arc, p) ;
		}
		i++ ;
	}
	fseek(f, cur_position, SEEK_SET) ;/*Reprend la lecture du fichier ou on était (prêt pour le sommet suivant)*/
	return p;
}
